package cn.iocoder.yudao.module.crossborder.risk.api.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 风险评估信息 DTO
 *
 * @author LHL
 */
@Schema(description = "RPC 服务 - 风险评估信息 DTO")
@Data
public class RiskAssessmentDTO {

    @Schema(description = "评估编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
    private Long id;

    @Schema(description = "业务类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "ORDER")
    private String businessType;

    @Schema(description = "业务编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "2048")
    private Long businessId;

    @Schema(description = "用户编号", example = "3072")
    private Long userId;

    @Schema(description = "风险评分", example = "75.5")
    private BigDecimal riskScore;

    @Schema(description = "风险等级", example = "2")
    private Integer riskLevel;

    @Schema(description = "风险等级名称", example = "中风险")
    private String riskLevelName;

    @Schema(description = "风险类型", example = "1")
    private Integer riskType;

    @Schema(description = "风险类型名称", example = "交易风险")
    private String riskTypeName;

    @Schema(description = "评估状态", example = "1")
    private Integer status;

    @Schema(description = "评估结果", example = "通过")
    private String result;

    @Schema(description = "风险因子", example = "高频交易,异常IP")
    private String riskFactors;

    @Schema(description = "评估规则", example = "规则1,规则2")
    private String assessmentRules;

    @Schema(description = "建议动作", example = "人工审核")
    private String recommendedAction;

    @Schema(description = "评估详情", example = "详细的风险评估报告")
    private String assessmentDetail;

    @Schema(description = "评估时间")
    private LocalDateTime assessmentTime;

    @Schema(description = "有效期至")
    private LocalDateTime expireTime;

    @Schema(description = "备注", example = "需要重点关注")
    private String remark;

    @Schema(description = "创建时间")
    private LocalDateTime createTime;

    @Schema(description = "更新时间")
    private LocalDateTime updateTime;

}
